#include <stdio.h>
#define N 4
#define M 3

void combination(int *a, int *b, int n, int m)
{

	if( m ==1)
	{
		//printf("%d\n",*a);
		// 打印整个排好序的数组
        //*b = *a;
		for(int j=0; j<n; j++)
		{
            for(int i =1-M; i < 0; i++)
				printf("%d\t",b[i]);
			printf("%d\t",a[j]);
			printf("\n");
		}
		
		
	}
				
	else
	{
		for(int i =0; i <n-m+1; i++)
		{
			// int tmp = a[0];
			// a[0] = a[i];
			// a[i] = tmp;
			//printf("%d\t",*a);
			*b = a[i];
            combination(a+i+1,b+1,n-i-1,m-1);
			// tmp = a[0];
			// a[0] = a[i];
			// a[i] = tmp;
		}
	}

}

int main(void)
{
	//int array[3] = {1,2,3};
	//int m=1;
	int array[N] = {1,2,3,4};
	int b[M];
	combination(array, b,N, M);
	return 0;
}
